package com.jml.redis.手写redis.service;

import com.jml.redis.手写redis.entity.User;
import com.jml.redis.手写redis.mapper.UserMapper;
import com.jml.redis.手写redis.utils.RedisUtils;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
	@Autowired
	private UserMapper userMapper;
	@Autowired
	private RedisUtils redisUtils;

	// 在方法上加上@ExtRedisCache 将数据库查询结果自动缓存到redis里面
	// @ExtRedisCache(cacheKey = "getUsers", timeOut = 10000)
	public List<User> getUsers(String name) {
		// 1.定义缓存key cacheKey+类的完整地址+方法名称+参数类型+参数名称+参数值 (对应查询结果是唯一的吧)
		// 2.使用缓存的key 查询redis缓存 是否存在对应的数据
		// ###2.1 如果缓存中存在数据的话(直接返回缓存的数据)给客户端
		// ###2.2如果缓存中不存在数据的话，直接查询数据库，并且将数据库值缓存到redis中
		return userMapper.getUsers(name);
	}

	// 新增数据 如何与缓存同步 新增数据之后 直接清空对应key缓存中所有查询数据，让后重新缓存同步数据库值。
	public List<User> getUserAll() {
		return userMapper.getUsersAll();
	}

}
